
import { effect } from "./effect"

export const computed = (gutter: Function) => {
    let changeDep = true //是否需要更新 默认为true
    let value = null    // 缓存值
    const _effect = effect(gutter, {
        lazy: true, //默认第一次不会执行
        scheduler() {
            // 这个函数被调用的时候 此时会触发依赖更新 修改状态
            changeDep = true
        }
    })

    // computed返回需要使用value来获取值
    // 初始化一个类
    class ComputedRefImpl {
        get value() {
            if (changeDep) {
                // 依赖变更时重新计算
                value = _effect()
                changeDep = false
            console.log("computed value is " + value);
            }
            return value
        }
    }
    return new ComputedRefImpl()
}